/*
 * 
 */
package fr.univtln.superplanning.api.actor;

import java.util.List;

/**
 * The Interface IPersonManager. To limited the memory usage, their has no
 * methods to get all table record but only methods to get keys and to get a
 * record by it's key..
 */
public interface IPersonManager {

	/**
	 * Gets the all person type codes.
	 * 
	 * @return the all person type codes
	 */
	public List<String> getAllPersonTypeCodes();

	/**
	 * Gets the person type by code.
	 * 
	 * @param typeName
	 *            the type name
	 * @return the person type by code
	 */
	public PersonType getPersonTypeByCode(String typeName);

	/**
	 * Gets the all person logins.
	 * 
	 * @return the all person logins
	 */
	public List<String> getAllPersonLogins();

	/**
	 * Gets the person by login.
	 * 
	 * @param login
	 *            the login
	 * @return the person by login
	 */
	public IPerson getPersonByLogin(String login);

	/**
	 * Gets the all teacher logins.
	 * 
	 * @return the all teacher logins
	 */
	public List<String> getAllTeacherLogins();

	/**
	 * Gets the teacher by login.
	 * 
	 * @param login
	 *            the login
	 * @return the teacher by login
	 */
	public Teacher getTeacherByLogin(String login);

	/**
	 * Gets the all student logins.
	 * 
	 * @return the all student logins
	 */
	public List<String> getAllStudentLogins();

	/**
	 * Gets the student by login.
	 * 
	 * @param login
	 *            the login
	 * @return the student by login
	 */
	public Student getStudentByLogin(String login);

	/**
	 * Gets the all person type.
	 * 
	 * @return the all person type
	 */
	public List<String> getAllPersonType();

	/**
	 * Gets the person type by login.
	 * 
	 * @param login
	 *            the login
	 * @return the person type by login
	 */
	public PersonType getPersonTypeByLogin(String login);

	/**
	 * Insert person.
	 * 
	 * @param person
	 *            the person
	 */
	public void insertPerson(IPerson person);

	/**
	 * Insert person type.
	 * 
	 * @param personType
	 *            the person type
	 */
	public void insertPersonType(PersonType personType);

	/**
	 * Gets the person code by type.
	 * 
	 * @param personType
	 *            the person type
	 * @return the person code by type
	 */
	public PersonType getPersonCodeByType(String personType);

	/**
	 * Gets the all main teachers.
	 * 
	 * @return the all main teachers
	 */
	public List<String> getAllMainTeachers();

	/**
	 * Gets the main teacher by lastname.
	 * 
	 * @param selectedMainTeacher
	 *            the selected main teacher
	 * @return the main teacher by lastname
	 */
	public MainTeacher getMainTeacherByLastname(String selectedMainTeacher);

}
